Запуск кластера через Docker compose¶
В этом руководстве показано, как развернуть Tarantool DB с помощью Docker compose.
Примечание
Данный способ является вспомогательным и используется для тестирования и демонстрации в примерах документации. Для целевого развертывания используйте инсталлятор Ansible Tarantool Enterprise.
Содержание:
Пререквизиты¶
Для выполнения примера требуются:
установленный Docker-образ Tarantool DB;
приложение Docker compose;
исходные файлы примера
up_with_docker_compose.Примечание
Есть два способа получить исходные файлы примера:
Архив с полной документацией Tarantool DB, полученный по почте или скачанный в личном кабинете tarantool.io. Пример архива:
tarantooldb-documentation-1.0.0.tar.gz. Примерup_with_docker_composeрасположен в таком архиве в директории./doc/examples/up_with_docker_compose/.Отдельный архив up_with_docker_compose.tar.gz, скачанный c сайта Tarantool.
Запуск стенда¶
Перейдите в директорию примера up_with_docker_compose:
cd ./doc/examples/up_with_docker_compose/
Запустите кластер Tarantool DB:
docker compose up -d --build
Используемые файлы¶
В руководстве используются следующие файлы примера up_with_docker_compose:
docker-compose.yml– описание узлов кластера;bootstrap/topology.json– топология кластера;./tools/client/bootstrap.sh– скрипт, применяющий топологию кластера;bootstrap/config.yml– конфигурация кластера;bootstrap/migrations/source– директория, содержащая файлы с описанием миграций;./tools/client/migrate.sh– скрипт, применяющий миграции.
Конфигурация контейнера для узла Tarantool DB¶
Конфигурация контейнера для узла Tarantool DB задается в файле docker-compose.yml:
tarantool-router-msk:
image: tarantooldb:1x-latest
networks:
- tarantooldb_network
ports:
- "8081:8081"
- "3301:3301"
environment:
- TARANTOOL_ADVERTISE_URI=tarantool-router-msk:3301
- TARANTOOL_ALIAS=router-msk
Здесь:
image– название Docker-образа, используемого для создания контейнера;networks– название подсети;ports– используемые порты;environment– переменные окружения для опций Tarantool и Cartridge:TARANTOOL_ADVERTISE_URI– адрес и порт, на котором узел доступен в кластере;TARANTOOL_ALIAS– название узла кластера.
Полный список опций доступен в документации к модулю cartridge.argparse и в описании Docker-образа Tarantool DB.
Контейнер user-host¶
В файле docker-compose.yml есть специальный контейнер user-host.
Он выступает в роли компьютера разработчика, с которого выполняются:
Настройка топологии кластера и первоначальный запуск (bootstrap) модуля шардирования vshard.
Загрузка клиентского кода в кластер: описание спейсов и функций (миграции)
В примере конфигурация контейнера user-host выглядит так:
user-host:
image: tarantooldb:1x-latest
networks:
- tarantooldb_network
environment:
- TARANTOOLDB_TARGET_URI=tarantool-router-msk:8081
- BOOTSTRAP_FAILOVER=1
- TARANTOOLDB_BOOTSTRAP_TIMEOUT=60
working_dir: /usr/share/tarantool/tarantooldb/tools/client/
command: /bin/sh -c "./bootstrap.sh && ./health_check.sh && ./migrate.sh"
depends_on:
- tarantool-router-msk
- tarantool-router-spb
- tarantool-storage-1-msk
- tarantool-storage-1-spb
- tarantool-storage-2-msk
- tarantool-storage-2-spb
- etcd1
- etcd2
- etcd3
volumes:
- ./bootstrap/:/bootstrap/
Здесь:
image– название Docker-образа, используемого для создания контейнера; Используется как источник скриптовbootstrap.sh,health_check.shиmigrate.sh. Предполагается, что в реальных условиях скрипты будут загружены на компьютер разработчика из личного кабинета tarantool.io.networks– название подсети;environment– переменные окружения:TARANTOOLDB_TARGET_URI– адрес, по которому доступны API-команды кластера. Используется скриптамиbootstrap.sh,health_check.shиmigrate.sh;BOOTSTRAP_FAILOVER– первоначальный запуск механизма восстановления после сбоев (failover);TARANTOOLDB_BOOTSTRAP_TIMEOUT– время ожидания первоначального запуска (bootstrap);
working_dir– директория, в которой лежат скрипты;command– запуск скриптовbootstrap.sh,health_check.shиmigrate.sh;depends_on– секция определяет, что контейнерuser-hostзапускается только после запуска всех остальных узлов кластера;volumes– передача в контейнер директории с настройками кластера и пользовательской логикой, чтобы они стали доступны для скриптов.